//package org.jeecg.modules.quartz.job;
//
//import com.alibaba.fastjson.JSONObject;
//import com.aliyun.oss.common.utils.StringUtils;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import org.apache.commons.collections.CollectionUtils;
//import org.jeecg.common.constant.enums.ExamineStatusEnum;
//import org.jeecg.common.constant.enums.MessageTypeEnum;
//import org.jeecg.common.util.DateUtils;
//import org.jeecg.modules.openapi.OpenApiService;
//import org.jeecg.modules.wlhy.customer.entity.HyCustomer;
//import org.jeecg.modules.wlhy.customer.service.IHyCustomerService;
//import org.jeecg.modules.wlhy.hydriver.entity.HyDriver;
//import org.jeecg.modules.wlhy.hydriver.service.IHyDriverService;
//import org.jeecg.modules.wlhy.hyvehicle.entity.HyVehicle;
//import org.jeecg.modules.openapi.dto.VehicleLicenseVO;
//import org.jeecg.modules.wlhy.hyvehicle.service.IHyVehicleService;
//import org.jeecg.modules.wlhy.hywarningmessage.entity.HyWarningMessage;
//import org.jeecg.modules.wlhy.hywarningmessage.service.IHyWarningMessageService;
//import org.quartz.Job;
//import org.quartz.JobExecutionContext;
//import org.quartz.JobExecutionException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import javax.annotation.Resource;
//import java.util.Date;
//import java.util.List;
//
///**
// * 预警消息脚本
// *
// * @author duanlikao
// * @created 2020/12/22
// */
//public class MessageTypeJob implements Job {
//
//	/**
//	 * 预警消息
//	 */
//	@Autowired
//	private IHyWarningMessageService hyWarningMessageService;
//
//	/**
//	 * 货主
//	 */
//	@Autowired
//	private IHyCustomerService hyCustomerService;
//
//	/**
//	 * 司机
//	 */
//	@Autowired
//	private IHyDriverService hyDriverService;
//
//	/**
//	 * 车辆
//	 */
//	@Autowired
//	private IHyVehicleService hyVehicleService;
//
//	@Resource
//	private OpenApiService openApiService;
//
//	private static final Logger LOGGER = LoggerFactory.getLogger(MessageTypeJob.class);
//
//	@Override
//	public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//			this.customerWarningMessage();
//			this.driverWarningMessage();
//		    this.vehicleWarningMessage();
//	}
//
//	/**
//	 * 车辆预警消息扫描
//	 */
//	private void  vehicleWarningMessage(){
//		long start = System.currentTimeMillis();
//		int pageNo = 0;
//		int pageSize = 100;
//		List<HyVehicle> list = null;
//		do {
//			QueryWrapper<HyVehicle> queryWrapper = new QueryWrapper();
//			queryWrapper.eq("iz_used","1");
//			queryWrapper.eq("examine_status", ExamineStatusEnum.EXAMINE_STATUS_APPROVED.getCode());
//			Page<HyVehicle> page = new Page<HyVehicle>(pageNo, pageSize);
//			IPage<HyVehicle> pageList = hyVehicleService.page(page, queryWrapper);
//			list = pageList.getRecords();
//			if (CollectionUtils.isNotEmpty(list)) {
//				for (HyVehicle hyVehicle : list) {
//					HyDriver hyDriver = hyDriverService.getById(hyVehicle.getDriverId());
//					HyWarningMessage hyWarningMessage = new HyWarningMessage();
//					hyWarningMessage.setUserId(hyDriver.getUserId());
//					hyWarningMessage.setObjectId(hyVehicle.getId());
//
//					if(hyVehicle.getRoadTransportExpiredDate() != null &&
//							hyVehicle.getRoadTransportExpiredDate().before(new Date()) ){
//						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_YSZDQ.getCode());
//						hyWarningMessage.setMessageContent(
//								"司机:"+hyDriver.getDriverName()+" 车辆:"+hyVehicle.getVehicleNumber()+" 道路运输证过期时间已经到期!"
//						);
//						this.saveWarningMessage(hyWarningMessage);
//					}
//					//车辆行驶证信息查询
//					String res = openApiService.vQueryLicenseV2(hyVehicle.getVehicleNumber(),
//							hyVehicle.getVehiclePlateColorCode());
//					JSONObject jsonObject = JSONObject.parseObject(res);
//					String strResult = jsonObject.get("result").toString();
//					if(jsonObject.get("status").equals(1001) && !StringUtils.isNullOrEmpty(strResult)){
//						List<VehicleLicenseVO> vehicleLicenseVO = JSONObject.parseArray(strResult, VehicleLicenseVO.class);
//						String strDrvLicVdy = vehicleLicenseVO.get(0).getDrvLicVdy();
//						if(!StringUtils.isNullOrEmpty(strDrvLicVdy)){
//							long drvLicVdyTime = Integer.valueOf(strDrvLicVdy ) *1000;
//							Date drvLicVdyDate = DateUtils.getDate(drvLicVdyTime);
//							if(drvLicVdyDate.before(new Date()) ){
//								hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_XSZDQ.getCode());
//								hyWarningMessage.setMessageContent(
//										"司机:"+hyDriver.getDriverName()+" 车辆:"+hyDriver.getDriverName()+" 行驶证有效期已经到期!"
//								);
//								this.saveWarningMessage(hyWarningMessage);
//							}
//						}
//
//					}
//					//车辆是否入网
//					String resVehicle = openApiService.checkTruckExist(hyVehicle.getVehicleNumber());
//					JSONObject jsonObjectVehicle = JSONObject.parseObject(resVehicle);
//					String strVehicleResult = jsonObjectVehicle.get("result").toString();
//					if(jsonObject.get("status").equals(1001) && !strVehicleResult.equals("no")){
//						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_CLWRW.getCode());
//						hyWarningMessage.setMessageContent(
//								"司机:"+hyDriver.getDriverName()+" 车辆:"+hyDriver.getDriverName()+" 车辆未入网!"
//						);
//						this.saveWarningMessage(hyWarningMessage);
//					}
//
////					if(hyDriver.getValidPeriodTo().before(new Date()) ){
////						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_XKZDQ.getCode());
////						hyWarningMessage.setMessageContent(
////								"司机:"+hyDriver.getDriverName()+" 车辆:"+hyDriver.getDriverName()+" 许可证有效期已经到期!"
////						);
////						this.saveWarningMessage(hyWarningMessage);
////					}
//				}
//			}
//
//			pageNo += pageSize;
//		} while (CollectionUtils.isNotEmpty(list));
//		LOGGER.info("---车辆预警消息扫描完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----");
//	}
//
//	/**
//	 * 司机预警消息扫描
//	 */
//	private void  driverWarningMessage(){
//		long start = System.currentTimeMillis();
//		int pageNo = 0;
//		int pageSize = 100;
//		List<HyDriver> list = null;
//		do {
//			QueryWrapper<HyDriver> queryWrapper = new QueryWrapper();
//			queryWrapper.eq("iz_used","1");
//			queryWrapper.eq("examine_status", ExamineStatusEnum.EXAMINE_STATUS_APPROVED.getCode());
//			queryWrapper.orderByAsc("valid_period_to");
//			Page<HyDriver> page = new Page<HyDriver>(pageNo, pageSize);
//			IPage<HyDriver> pageList = hyDriverService.page(page, queryWrapper);
//			list = pageList.getRecords();
//			if (CollectionUtils.isNotEmpty(list)) {
//				for (HyDriver hyDriver : list) {
//					HyWarningMessage hyWarningMessage = new HyWarningMessage();
//					hyWarningMessage.setUserId(hyDriver.getUserId());
//					hyWarningMessage.setObjectId(hyDriver.getId());
//					if(hyDriver.getQualificationExpiredDate() != null &&
//							hyDriver.getQualificationExpiredDate().before(new Date()) ){
//						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_CYZGZDQ.getCode());
//						hyWarningMessage.setMessageContent(
//								"司机:"+hyDriver.getDriverName()+" 从业资格证有效期已经到期!"
//						);
//						this.saveWarningMessage(hyWarningMessage);
//					}
//					if(hyDriver.getIdcardExpiredDate() != null  &&
//							hyDriver.getIdcardExpiredDate().before(new Date()) ){
//						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_SFZDQ.getCode());
//						hyWarningMessage.setMessageContent(
//								"司机:"+hyDriver.getDriverName()+" 身份证有效期已经到期!"
//						);
//						this.saveWarningMessage(hyWarningMessage);
//					}
//					if(hyDriver.getValidPeriodTo() != null &&
//							hyDriver.getValidPeriodTo().before(new Date()) ){
//						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_JSZDQ.getCode());
//						hyWarningMessage.setMessageContent(
//								"司机:"+hyDriver.getDriverName()+" 驾驶证有效期已经到期!"
//						);
//						this.saveWarningMessage(hyWarningMessage);
//					}
//				}
//			}
//
//			pageNo += pageSize;
//		} while (CollectionUtils.isNotEmpty(list));
//		LOGGER.info("---司机预警消息扫描完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----");
//	}
//
//	/**
//	 * 货主预警消息扫描
//	 */
//	private void  customerWarningMessage(){
//		long start = System.currentTimeMillis();
//		int pageNo = 0;
//		int pageSize = 100;
//		List<HyCustomer> list = null;
//		do {
//			QueryWrapper<HyCustomer> queryWrapper = new QueryWrapper();
//			queryWrapper.eq("iz_used","1");
//			queryWrapper.eq("examine_status", ExamineStatusEnum.EXAMINE_STATUS_APPROVED.getCode());
//			Page <HyCustomer> page = new Page<HyCustomer>(pageNo, pageSize);
//			IPage<HyCustomer> pageList = hyCustomerService.page(page, queryWrapper);
//			list = pageList.getRecords();
//			if (CollectionUtils.isNotEmpty(list)) {
//				for (HyCustomer hyCustomer : list) {
//					HyWarningMessage hyWarningMessage = new HyWarningMessage();
//					hyWarningMessage.setUserId(hyCustomer.getUserId());
//					hyWarningMessage.setObjectId(hyCustomer.getId());
//					if(hyCustomer.getBusinessLicenseExpiredDate() != null &&
//							hyCustomer.getBusinessLicenseExpiredDate().before(new Date()) ){
//						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_YYZSDQ.getCode());
//						hyWarningMessage.setMessageContent(
//								"货主:"+hyCustomer.getCustomerName()+" 营业执照已经到期!"
//						);
//						this.saveWarningMessage(hyWarningMessage);
//					}
//					if(hyCustomer.getIdcardExpiredDate() != null &&
//							hyCustomer.getIdcardExpiredDate() .before(new Date()) ){
//						hyWarningMessage.setMessageType(MessageTypeEnum.MESSAGE_TYPE_SFZDQ.getCode());
//						hyWarningMessage.setMessageContent(
//								"货主:"+hyCustomer.getCustomerName()+" 身份证有效期已经到期!"
//						);
//						this.saveWarningMessage(hyWarningMessage);
//					}
//				}
//			}
//
//			pageNo += pageSize;
//		} while (CollectionUtils.isNotEmpty(list));
//		LOGGER.info("---货主预警消息扫描完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----");
//	}
//
//	/**
//	 * 保存告警信息
//	 * @param hyWarningMessage
//	 * @return
//	 */
//	private boolean saveWarningMessage(HyWarningMessage hyWarningMessage){
//		if(hyWarningMessage == null){
//			return false;
//		}
//		hyWarningMessage.setCreateBy("systemUser");
//		hyWarningMessage.setCreateTime(new Date());
//		LOGGER.info("MessageTypeJob saveWarningMessage" ,hyWarningMessage);
//		HyWarningMessage hyWarningMessageDb = hyWarningMessageService.getMessageByObjectIdAndMessageType(hyWarningMessage.getObjectId(),hyWarningMessage.getMessageType());
//		if(hyWarningMessageDb == null){
//			hyWarningMessageService.save(hyWarningMessage);
//		}else {
//			hyWarningMessage.setId(hyWarningMessageDb.getId());
//			hyWarningMessageService.updateById(hyWarningMessage);
//		}
//		return false;
//	}
//
//
//}
